\documentclass[a4paper,10pt]{report}\input{../0.Préambule/Préambule_cours_prof}\input{0_Préambule_Repré1}\begin{document}

\newpage
\setcounter{chapter}{1}
\chapter{Les booléens}

\section{Pourquoi des booléens ?}

\vspace{-2mm}
Ce type de variable est né de la nécessité d'avoir un type de variable ne prenant que deux valeurs : VRAI ou FAUX (0 ou 1) afin de répondre à des conditions d'exécution de code.

\begin{ex}
Obtention de la mention « Bien » au Baccalauréat : selon la note moyenne N obtenue, quelle(s) condition(s) doivent être validées ? D'autres conditions étaient-elles envisageables ?
\end{ex}

\vspace{-3mm}
\section{Un peu d'histoire}

\vspace{-2mm}
L'algèbre de Boole est due au logicien, mathématicien et philosophe britannique George Boole (1815-1864). En 1847 puis 1854, ce scientifique publie les bases de ce qu'on appelle aujourd'hui l'algèbre de Boole. Son intérêt est de traduire des idées et des concepts en équations, leur appliquer certaines lois et retraduire le résultat en termes logiques, n'acceptant que deux valeurs numériques : 0 et 1 (Faux ou Vrai). L'importance de son travail est dans de nombreux domaines (théorie des probabilités, circuits téléphoniques, hydrauliques…), dont l'informatique.

\begin{dft}
Un booléen est un type de variable (type bool en Python) à deux états : Vrai ou Faux, représentés respectivement par 1 et 0.
\end{dft}

\vspace{-3mm}
\section{Booléens et opérateurs de comparaison}

\vspace{-2mm}
\noindent \begin{minipage}{10.5cm}
Un booléen peut être le résultat d'une comparaison, il s'agit alors d'un test. Si le test est valide, le résultat est alors Vrai (True sous Python). Dans le cas contraire, le résultat est Faux (False sous Python).

\begin{ex}

\begin{minipage}{4.8cm}
\begin{center}
\begin{minipage}{3cm}
\begin{edupython}
N = 13
print(N > 12)
\end{edupython}
\end{minipage}

L'interpréteur affiche True
\end{center}
\end{minipage}
\begin{minipage}{4.8cm}
\begin{center}
\begin{minipage}{3cm}
\begin{edupython}
N = 13
print(N < 12)
\end{edupython}
\end{minipage}

L'interpréteur affiche False
\end{center}
\end{minipage}
\end{ex}
Les opérateurs de comparaison que nous utiliserons cette année sont :
\end{minipage}
\begin{minipage}{7cm}

\begin{center}
\renewcommand{\arraystretch}{1.3}
\begin{tabular}{|>{\centering}m{1.5cm}|m{3.5cm}|}
\hline
\rowcolor{titlecolor!20}\textbf{Opérateur} & \textbf{Signification} \\\hline
<	& strictement inférieur \\\hline
<=	& inférieur ou égal \\\hline
>	& strictement supérieur \\\hline
>=	& supérieur ou égal \\\hline
==	& égal \\\hline
!=	& différent \\\hline
\end{tabular}
\end{center}
\end{minipage}

\section{Opérateurs booléens et tables de vérité}

\vspace{-2mm}
\subsection{Opérateur \og and \fg{} }

L'opérateur \og and \fg{}  permet de tester si deux booléens sont vrais : \og $a$ and $b$ \fg{} \\a pour résultat True si et seulement si $a$ est vrai et $b$ est vrai. \\Sa table de vérité est donnée par :

\begin{rmq}

\begin{enumerate}
\item[•] Mathématiquement le résultat est donné par $a \times b$, c'est-à-dire le produit.
\item[•] Cette opération booléenne est appelée \og conjonction \fg{}
\end{enumerate}
\end{rmq}

\vspace{-3.5cm}
\begin{flushright}
\renewcommand{\arraystretch}{1.3}
\begin{tabular}{|c|c|c|}
\hline
\rowcolor{titlecolor!20}\hspace{5mm}$a$\hspace{5mm}	& \hspace{5mm}$b$\hspace{5mm} & $a$ and $b$\\\hline
0 & 0 & 0\\\hline
0 & 1 & 0\\\hline
1 & 0 & 0\\\hline
1 & 1 & 1\\\hline
\end{tabular}
\end{flushright}

\begin{ex}
\begin{enumerate}
\item[•] La variable booléenne AmpouleOK représente le fait qu'une ampoule est en état de fonctionnement.
\item[•] La variable booléenne InterrupteurOn est vraie si l'interrupteur contrôlant cette ampoule est en position \og on \fg{}. 
\item[•] La variable booléenne LumiereAllumee représente le fait que la lumière est allumée. 
\end{enumerate}
Alors :
\vspace{-3mm}
\begin{center}
LumiereAllumee = AmpouleOK And InterrupteurOn
\end{center}

Ainsi, on peut affirmer que la lumière est allumée (LumiereAllumee est vraie) si et seulement si l'ampoule est en état de fonctionnement et si l'interrupteur reste en position \og on \fg{}  (AmpouleOK vrai et InterrupteurOn vrai).
\end{ex}

\vspace{-2mm}
\subsection{Opérateur \og or \fg{} }

L'opérateur \og or \fg{} permet de tester si l'un des deux booléens au moins est vrai : \\\og $a$ or $b$ \fg{} a pour résultat True si et seulement si au moins un des booléens \\$a$ ou $b$ est vrai. Sa table de vérité est donnée par :

\begin{rmq}

Cette opération booléenne est appelée \og disjonction \fg{}
\end{rmq}

\vspace{-3.5cm}
\begin{flushright}
\renewcommand{\arraystretch}{1.3}
\begin{tabular}{|c|c|c|}
\hline
\rowcolor{titlecolor!20}\hspace{5mm}$a$\hspace{5mm}	& \hspace{5mm}$b$\hspace{5mm} & $a$ or $b$\\\hline
0 & 0 & 0\\\hline
0 & 1 & 1\\\hline
1 & 0 & 1\\\hline
1 & 1 & 1\\\hline
\end{tabular}
\end{flushright}

\begin{ex}
\begin{enumerate}
\item[•] La variable booléenne AmpouleHS représente le fait qu'une ampoule n'est pas en état de fonctionnement.
\item[•] La variable booléenne InterrupteurOff est vraie si l'interrupteur contrôlant cette ampoule est en position \og off \fg{}.
\item[•] La variable booléenne LumiereEteinte représente le fait que la lumière est éteinte. 
\end{enumerate}
Alors :

\vspace{-3mm}
\begin{center}
LumiereEteinte = AmpouleHS or InterrupteurOff
\end{center}

Ainsi, on peut affirmer que la lumière est éteinte (LumiereEteinte est vraie) si et seulement si l'ampoule n'est pas en état de fonctionnement ou si l'interrupteur est en position \og off \fg{}  (AmpouleHS vrai ou InterrupteurOff vrai).
\end{ex}

\vspace{-2mm}
\subsection{Opérateur \og not \fg{} }

L'opérateur \og not \fg{} retourne le booléen opposé. Sa table de vérité est donnée par :

\begin{rmq}

Cette opération booléenne est appelée \og négation \fg{}
\end{rmq}

\vspace{-2.2cm}
\begin{flushright}
\renewcommand{\arraystretch}{1.3}
\begin{tabular}{|c|c|c|}
\hline
\rowcolor{titlecolor!20}\hspace{5mm}$a$\hspace{5mm}	 & \hspace{2mm}not $a$\hspace{2mm} \\\hline
0 & 1 \\\hline
1 & 0 \\\hline
\end{tabular}
\end{flushright}

\begin{ex}
\begin{enumerate}
\item[•] La variable booléenne EauSolide représente le fait que l'eau est sous forme de glace.
\item[•] La variable booléenne TemperaturePositive est vraie si la température de l’eau est positive.  
\end{enumerate}
Alors :

\vspace{-3mm}
\begin{center}
EauSolide = not TemperaturePositive
\end{center}

Ainsi, si TemperaturePositive est vraie avant cette affectation, alors EauSolide vaudra faux après cette affectation. Réciproquement, si TemperaturePositive est fausse avant cette affectation, alors EauSolide vaudrai vrai après cette affectation.
\end{ex}

\vspace{-2mm}
\subsection{Opérateur \og xor \fg{} }

L'opérateur \og xor \fg{} aussi appelé \og ou exclusif \fg{} permet de tester si seulement \\l'un des deux booléens est vrai :  \og $a$ xor $b$ \fg{} a pour résultat True si et seulement si \\un des booléens $a$ ou $b$ est vrai. Sa table de vérité est donnée par :

\vspace{-2.8cm}
\begin{flushright}
\renewcommand{\arraystretch}{1.3}
\begin{tabular}{|c|c|c|}
\hline
\rowcolor{titlecolor!20}\hspace{5mm}$a$\hspace{5mm}	& \hspace{5mm}$b$\hspace{5mm} & $a$ xor $b$\\\hline
0 & 0 & 0\\\hline
0 & 1 & 1\\\hline
1 & 0 & 1\\\hline
1 & 1 & 0\\\hline
\end{tabular}
\end{flushright}

\vspace{-0.5cm}
\begin{ex}
Deux interrupteurs va-et-vient contrôlent la lumière d'une pièce, pour qu'elle soit allumée, les deux doivent être dans la même position. La variable booléenne VaEtVient1\textunderscore ON représente le fait que l’interrupteur va-et-vient n°1 est en position \og on \fg{} . La variable booléenne VaEtVient2\textunderscore ON représente le fait que l’interrupteur va-et-vient n°2 est en position \og off \fg{} . EtatLumiere est vraie si la lumière est allumée. Alors :
\begin{center}
EtatLumiere = VaEtVient1\textunderscore ON xor VaEtVient2\textunderscore ON
\end{center}
Ainsi, si Etatlumiere est vraie si et seulement si les deux interrupteurs sont dans la même position.
\end{ex}
\end{document}